<?php

class SAEStorageADP {
	/**
	 * 初始配置设置一个domain
	 */
	var $domains = array();
	var $domainSelect = NULL;
	var $storageObj = NULL;
	
	function SAEStorageADP($conf) {
		$this->storageObj = new SaeStorage();
		if (isset($conf['domains']) && !empty($conf['domains'])) {
			$$this->domains = $conf['domains'];
			///才初始化使用第一个domain作为默认domain
			$this->selectDomain = array_shift($conf['domains']);
		}
	}
	/**
	 *  如果文件加密的话，使用该方法
	 *  Access Key: xy2xk1wo5o
	 *  Secret Key: 2hx0x0kl5xh0klji54iy5l4zi5jm00kxkyl2h5il
	 */
	
	function setAuth($aKey, $sKey) {
		return $this->storageObj->setAuth($aKey, $sKey);
	}
	/**
	 *  设置使用的domian
	 */
	
	function selectDomain($domainName) {
		$this->selectDomain = $domainName;
		if (!in_array($domainName, $this->domains)) {
			array_push($this->domains, $domainName);
		}
	}
	/**
	 *  expires: 浏览器缓存超时，功能与Apache的Expires配置相同
	 *  $expires = 'ExpiresActive On
	 ExpiresDefault "access plus 30 days"
	 ExpiresByType text/html "access plus 1 month 15 days 2 hours"
	 ExpiresByType image/gif "modification plus 5 hours 3 minutes"
	 ExpiresByType image/jpg A2592000
	 ExpiresByType text/plain M604800
	 ';
	 $stor = new SaeStorage();
	 $attr = array('expires'=>$expires);
	 $ret = $stor->setDomainAttr("test", $attr);
	 if ($ret === false) {
	 var_dump($stor->errno(), $stor->errmsg());
	 }
	 */
	
	function setDomainAttr($domain, $att) {
		return $this->storageObj->setDomainAttr($domain, $att);
	}
	
	function read($filename) {
		return $this->storageObj->read($this->domainSelect, $filename);
	}
	
	function write($filename, $content, $append = FALSE, $size = - 1, $attr = array() , $compress = FALSE) {
		return $this->storageObj->write($this->domainSelect, $filename, $content, $size, $attr, TRUE);
	}
	
	function file_exists($fileName) {
		return $this->storageObj->fileExists($this->domainSelect, $filename);
	}
	/**
	 *  return: 执行成功以数组方式返回文件属性，否则返回false
	 *  属性值,如 array("fileName", "length")，当attrKey为空时，以关联数组方式返回该文件的所有属性。
	 */
	
	function info($filename, $info = array()) {
		return $this->storageObj->getAttr($this->domainSelect, $filename, $info);
	}
	/**
	 *  设置文件的web访问属性
	 *  expires: 浏览器缓存超时，功能与Apache的Expires配置相同\
	 encoding: 设置通过Web直接访问文件时，Header中的Content-Encoding。
	 type: 设置通过Web直接访问文件时，Header中的Content-Type。
	 */
	
	function setFileAttr($filename, $info) {
		return $this->storageObj->setFileAttr($this->domainSelect, $filename, $info);
	}
	
	function ls($prefix = '*', $limit = 10, $skip = 0) {
		return $this->storageObj->getList($this->domainSelect, $prefix, $limit, $skip);
	}
	/**
	 * 好获取web地址
	 */
	
	function getUrl($filename) {
		return $this->storageObj->getUrl($this->domainSelect, $filename);
	}
	/**
	 *  本地一次内存缓存文件，只在一次脚本执行时文件内容
	 *  有效，用于的大文件操作。
	 *  @return 文件标志
	 */
	
	function OnceMemberFileWrite($content) {
		$fileName = uniqid();
		file_put_contents(SAE_TMP_PATH . "/{$fileName}", $content);
		return ($fileName);
	}
	/**
	 *  吧本地一次性文件读，
	 *  @param $dump 是否直接输出文件内容
	 */
	
	function OnceMemberFileRead($fileName, $dump = FALSE) {
		$con = file_get_contents(SAE_TMP_PATH . "/{$fileName}");
		if ($dump) {
			echo $con;
			unset($con);
		}
		else {
			return $con;
		}
	}
}
?>